#include<iostream>
#include<cstring>
using namespace std;
const int N=1e3+10,M=2e3+10,INF=1e5+10;
int h[N],v[M],ne[M],e[M],id;
int n,m,k;
int dp[INF][N],f[INF];
void add(int a,int b,int w)
{
	v[id]=b;
	e[id]=w;
	ne[id]=h[a];
	h[a]=id++;	
}
int main()
{
	memset(h,-1,sizeof h);
	cin>>n>>m;
	while(m--)
	{
		int a,b,w;
	    cin>>a>>b>>w;
		add(a,b,w);
		add(b,a,w);
	}
	f[0]=1;
	for(int i=1;i<=10;i++)
	{
		int j=f[i-1];
		for(int k=h[j];~k;k=ne[k])
		{
			int u=e[k];
			if(dp[i][k]<dp[i-1][k]+e[k])
			{
				dp[i][k]=dp[i-1][k]+e[k];
				f[i]=u;
			}
		}
        cout<<f[i]<<' ';
	}
	cin>>k;
	while(k--)
	{
		int u,res=0;
		cin>>u;
		for(int i=1;i<=n;i++)
		res=max(res,dp[u][i]);
		cout<<res<<endl;
	}
	return 0;
} 
